import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.InputMismatchException;
import java.util.Scanner;


public class Client {
	private int idClient;
	private String mail;
	private String adresse;
	private int codePostal;
	private String ville;
	private static Scanner scanner = new Scanner(System.in);
	
	
	public Client(int idClient, String mail, String adresse, int codePostal, String ville){
		this.idClient = idClient;
		this.adresse = adresse;
		this.codePostal = codePostal;
		this.ville = ville;
		this.mail = mail;
	}
	
	/**
	 * affiche les albums privés du client.
	 */
	public void consulterAlbums(){
		String select = "SELECT mail, idClient, Titre, sousTitre, visible FROM CLIENT C, Album A where C.mail LIKE A.idClient";
		try {
			Statement stmt = Application.getStmt();
			stmt.executeUpdate("SET TRANSACTION READ ONLY");
			ResultSet res = stmt.executeQuery(select);
			System.out.println("Titre			Sous-titre");
			while (res.next())
			{
				String st = res.getString(4);
				if (st==null) st = "";
				System.out.printf("%s %30s \n",res.getString(3),st);
				
			}
			stmt.executeUpdate("COMMIT");
			res.close();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		System.out.println("----------------------------------");
	}
	
	public void gererAlbums(){
		
	}
	public void gererCommandes(){
		
	}
	
	/**
	 * Menu pour la modification des paramètres du compte.
	 */
	public void gererCompte(){
		System.out.println("Gesion de compte. Que voulez-vous modifier : ");
		System.out.println("	1 - Mot de passe.");
		System.out.println("	2 - Nom et Prénom");
		System.out.println("	3 - Coordonnées.");
		System.out.println("	4 - Revenir au menu.");
		int choix = scanner.nextInt();
		scanner.nextLine();
		switch(choix){
			case 1:
				modiferMdp();
				gererCompte();
				break;
			case 2:
				modiferNomPrenom();
				gererCompte();
				break;
			case 3:
				modiferCoordonnees();
				gererCompte();
				break;
			case 4:
				break;
			default:
				System.out.println("Tapez un nombre entre 1 et 4 !");
				gererCompte();
				break;
		}
	}
	
	/**
	 * Modification du Mot De passe
	 */
	private void modiferMdp(){
		System.out.print("Entrez votre nouveau mot de passe :");
		String mdp = scanner.nextLine();
		String update = "UPDATE Client SET MotDePasse = '"+mdp+"' WHERE mail LIKE '"+mail+"'";
		try {
			Statement stmt = Application.getStmt();
			//stmt.executeUpdate("SET TRANSACTION READ ONLY");
			int res = stmt.executeUpdate(update);
			if (res == 0){
				System.out.println("Mot de passe inchangé. Erreur SQL"); 
			}
			else {
				System.out.println("Mot de passe modifié.");
			}
			stmt.executeUpdate("COMMIT");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Modification de nom et du prénom
	 */
	private void modiferNomPrenom(){
		System.out.print("Entrez votre nom :");
		String nom = scanner.nextLine();
		System.out.print("Entrez votre prénom :");
		String prenom = scanner.nextLine();
		String update = "UPDATE Client SET nom = '"+nom+"' , prenom = '"+prenom+"' WHERE mail LIKE '"+mail+"'";
		System.out.println(update);
		try {
			Statement stmt = Application.getStmt();
			//stmt.executeUpdate("SET TRANSACTION READ ONLY");
			int res = stmt.executeUpdate(update);
			if (res == 0){
				System.out.println("Nom et Prénom inchangés. Erreur SQL"); 
			}
			else {
				System.out.println("Nom et Prénoms modifiés.");
			}
			stmt.executeUpdate("COMMIT");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * Modification des coordonnées (adresse, CP et ville)
	 */
	private void modiferCoordonnees(){
		System.out.print("Entrez votre adresse :");
		String adresse = scanner.nextLine();
		int codePostal = 0;
		while (codePostal == 0){
			try {
				System.out.print("Entrez le code Postal :");
				codePostal = scanner.nextInt();
			}
			catch(InputMismatchException e){
				System.out.println("Ce n'est pas un CP !");
				scanner.nextLine();
			}
		
		}
		scanner.nextLine();
		System.out.print("Entrez la ville :");
		String ville = scanner.nextLine();
		
		String update = "UPDATE Client SET adresse = '"+adresse+"' , codePostal = '"+codePostal+"'  , ville = '"+ville+"' WHERE mail LIKE '"+mail+"'";
		try {
			Statement stmt = Application.getStmt();
			//stmt.executeUpdate("SET TRANSACTION READ ONLY");
			int res = stmt.executeUpdate(update);
			if (res == 0){
				System.out.println("Coordonnées inchangés. Erreur SQL"); 
			}
			else {
				System.out.println("Coordonnées modifiés.");
				setAdresse(adresse);
				setCodePostal(codePostal);
				setVille(ville);
			}
			stmt.executeUpdate("COMMIT");
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	

	public int getIdClient() {
		return idClient;
	}

	public void setIdClient(int idClient) {
		this.idClient = idClient;
	}

	public int getCodePostal() {
		return codePostal;
	}

	public void setCodePostal(int codePostal) {
		this.codePostal = codePostal;
	}

	public String getAdresse() {
		return adresse;
	}

	public void setAdresse(String adresse) {
		this.adresse = adresse;
	}

	public String getVille() {
		return ville;
	}

	public void setVille(String ville) {
		this.ville = ville;
	}
	
}
